#ifndef TGA_INC_H
#define TGA_INC_H
#define NULL 0 
// Define your class(es) here.


// A class representing our program
// You will likely need to modify this (to add fields to the class):

class Character {

 private:
	


 public:

	Character();
	Character(int NEWID);
	Character(int NEWID,int NEWrace,int NEWcharClass,int NEWatk, int NEWdef, int NEWhp, int NEWspd, int NEWweapon,int NEWarmor, int newLocRow, int newLocCol);
	~Character();

	void setCharID(int newCharID);
	int getCharID();

	void setRace(int newRace);
	int getRace();

	void setCharClass(int newCharClass);
	int getCharClass();

	void setATK(int newATK);
	int getATK();

	void setDEF(int newDEF);
	int getDEF();

	 void setHP(int newHP);
	 int getHP();

	 void setSPD(int newSPD);
	 int getSPD();

	void setWeapon(int newWeapon);
	int getWeapon();

	 void setArmor(int newArmor);
	 int getArmor();

	 void printCharacter();



  
  
  //  FIELDS:

	int race;
	int charClass;
	int charID;		 //Unique ID # to differentiate between each character on the board
	int ATK;
	int DEF;
	int HP;
	int SPD;
	int weapon;
	int armor;

	int locRow;
	int locCol;

  
};

class Location {

 private:
	


 public:

	Location();
	Location(int row, int col);
	~Location();

	void setRow(int newRow);
	int getRow();

	void setCol(int newCol);
	int getCol();

	void printLocation();



  
  
  //  FIELDS:


	int row;
	int col;

  
};


class TestBoard {

 private:
	


 public:

	TestBoard();
	~TestBoard();
	void initializeBoard();
	void printBoard();
	void getSymbols();
	int isValid(int row, int col);
	
	void addChar(Character* newChar, int newRow, int newCol);
	void moveChar(Character *newChar, int oldRow, int oldCol, int newRow, int newCol);
	Character getChar(int fromRow, int fromCol);



  
  
  //  FIELDS:
	 Character board[10][10];
	 char symbols[10][10];
	 int moves[10];  // In array: 1 stands for up, 2 stands for down, 3 stands for left and 4 stands for right
	 int row;
	int x;
	int y;
	int column;

	enum state {FREE, SHIP, MISS, HIT} ;	


  
};

class Engine {

 private:
	


 public:

	Engine();
	~Engine();
	void initializeGame();
	void play();
	void move();

	




  
  
  //  FIELDS:
	 TestBoard* board;
	 Character *characters[81];
	 Location	path[10];
	 int curCharID;
	 int turnCounter;
	 bool keepPlaying;


  
};

#endif
